In computer science, garbage collection is a form of automatic computer resource management. For example, a garbage collection module or system (garbage collector or GC) attempts to reclaim resources (e.g., memory) used by data objects that will not be accessed or manipulated again by a subject application program. The basic functionalities of a garbage collector include determining which data objects in a program will not be accessed in the future, and reclaiming the resources used by those objects.
Recent advances in real-time garbage collection (RTGC) have led to its production use in a number of significant application areas including, for example, financial trading, telecommunications, and military command-and-control.
There is a very wide variety of users interested in RTGC technology, with a wide variety of application characteristics and operating environments. Real-time applications may be periodic (e.g., avionics), queued (e.g., telecommunication switches), or interactive (e.g., video games).
Any of these systems may be either “hard” real-time or “soft” real-time. In a hard real-time system, such as heart monitors or defense systems, it is considered a catastrophic failure of the system when a deadline is missed. In soft real-time systems, missed deadlines can have adverse effects, such as a graphical use interface not displaying all results of a stream being monitoring, but do not constitute a system failure.
Classical real-time systems typically operate with a certain amount of slack. If there is no slack, then the system can not guarantee to meet its bounds. But interactive systems may become sluggish during bursts of other activity on the machine, and in some cases this is the desired behavior. Queued systems may absorb temporary load spikes and tolerate a certain fraction of outliers depending on a service-level agreement. The use of adaptive algorithms that compute successively more precise results until available slack is exhausted allows hard real-time systems to saturate the central processing unit.
Furthermore, there is a great deal of diversity in the operating environment. That is, the computing system may be uni-processor or multi-processor; the machine may be dedicated or shared; and the operating system may have varying levels of real-time support.
Currently, RTGCs only support a limited subset of the potential application types and operating environments.